package main

// func Sum(n int) int {
// 	var sum int = 0
// 	for i := 1; i <= n; i++ {
// 		sum += i
// 	}
// 	return sum
// }

// func main() {
// 	fmt.Println(Sum(10))
// 	fmt.Println(Sum(20))
// }

// 可变参数
// func getSum(nums ...int) {
// 	var sum int = 0
// 	for i := 0; i < len(nums); i++ {
// 		sum += nums[i]
// 	}
// 	fmt.Println(sum)
// }

// func main() {
// 	getSum(1, 23, 4, 2, 1, 2)
// }

// func getSum(nums []int) int {
// 	sum := 0
// 	for _, v := range nums {
// 		sum += v
// 	}
// 	fmt.Printf("函数内:%p\n", &nums)
// 	nums[0] = 10
// 	return sum
// }

// func main() {
// 	nums1 := make([]int, 0, 5)
// 	fmt.Printf("mian函数:%p\n", &nums1)

// 	for i := 0; i < 5; i++ {
// 		nums1 = append(nums1, i)
// 	}
// 	getSum(nums1)

// }

// func fun1() (string, int) {
// 	return "zhangsan", 15
// }
// func main() {
// 	fmt.Println(fun1())
// }

// func fun() {
// 	fmt.Println("111111")
// 	defer fmt.Println("22222")
// 	fmt.Println("3333")
// }

// func main() {
// 	fun()
// }

// func main() {
// 	var f1 func(int, int)
// 	f1 = func(n1, n2 int) {
// 		fmt.Println(n1 + n2)
// 	}
// 	f1(3, 4)
// 	fmt.Printf("%T", f1)
// }

// func getSum(n int) int {
// 	if n == 0 {
// 		return 0
// 	}
// 	return n + getSum(n-1)
// }

// func main() {
// 	fmt.Println(getSum(10))
// }

// func add(a, b int) int {
// 	return a + b
// }

// func sub(a, b int) int {
// 	return a - b
// }
// func oper(a int, b int, fun func(int, int) int) {
// 	fmt.Println(fun(a, b))
// }

// func main() {
// 	oper(10, 5, add)
// 	oper(10, 5, sub)
// }

// func increment() func() int {
// 	var i int = 0
// 	fun := func() int {
// 		i++
// 		return i
// 	}
// 	return fun
// }

// func main() {
// 	fun := increment()
// 	fmt.Println(fun())
// 	fmt.Println(fun())
// 	fmt.Println(fun())
// 	f1 := increment()
// 	fmt.Println(f1())
// }
